// （axios的二次封装涉及request.js文件和config下的index.jsw文件）
import axios from 'axios'
import config from '../config'
import {ElMessage} from 'element-plus'
const NETWORK_ERROR='网络异常。。。就是说线上请求错了'

// 创建axios实例对象
const service =axios.create({
    baseURL:config.baseApi
})
// 请求前做的事情
service.interceptors.request.use((req=>{
    // 可以在此定义header jwt-token认证的时候
    return req
}))
// 这里是请求后做的事情
service.interceptors.response.use((res)=>{
  
    const{code,data,msg}=res.data
    if(code==200){
        return data
    }else{
        ElMessage.error(msg||NETWORK_ERROR)
        return Promise.reject(msg||NETWORK_ERROR)
    }
})

// 封装的核心函数
function request(options){
    options.method=options.method||'get'
    if(options.method.toLowerCase()=='get'){
        options.params=options.data
    }
    // 对mock的处理
    let isMock=config.Mock
    if(typeof options.mock!=='undefined'){
        isMock=options.mock
    }
    // 对线上环境处理
    if(config.env=='prod'){
        service.defaults.baseURL=config.baseApi
    }else{
        service.defaults.baseURL=isMock?config.mockApi:config.baseApi
    }
    return service(options)
}
export default request      